home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / DJGPP / DJSRC111.ZIP / go32 / paging.h < prev    next >
C/C++ Source or Header  |  1993-08-28  |  2KB  |  76 lines

  1. /* This is file PAGING.H */
  2. /*
  3. ** Copyright (C) 1993 DJ Delorie, 24 Kirsten Ave, Rochester NH 03867-2954
  4. **
  5. ** This file is distributed under the terms listed in the document
  6. ** "copying.dj", available from DJ Delorie at the address above.
  7. ** A copy of "copying.dj" should accompany this file; if not, a copy
  8. ** should be available from where this file was obtained.  This file
  9. ** may not be distributed without a verbatim copy of "copying.dj".
  10. **
  11. ** This file is distributed WITHOUT ANY WARRANTY; without even the implied
  12. ** warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  13. */
  14.  
  15. #ifndef _PAGING_H_
  16. #define _PAGING_H_
  17.  
  18. /* active if set */
  19. #define PT_P    0x001    /* present (else not) */
  20. #define PT_W    0x002    /* writable (else read-only) */
  21. #define    PT_U    0x004    /* user mode (else kernel mode) */
  22. #define PT_A    0x020    /* accessed (else not) */
  23. #define PT_D    0x040    /* dirty (else clean) */
  24. #define PT_I    0x200    /* Initialized (else not read from a.out file yet) */
  25. #define PT_S    0x400    /* Swappable (else not) */
  26. #define    PT_C    0x800    /* Candidate for swapping */
  27.  
  28. #define EMU_TEXT 0xb0000000L
  29.  
  30. /*  If not present and initialized, page is in swap file.
  31. **  If not present and not initialized, page is in a.out file.
  32. */
  33.  
  34. void paging_set_file(char *fname);
  35. word32 ptr2linear(void far *ptr);
  36. word32 paging_brk(word32 b);
  37. word32 paging_sbrk(int32 b);
  38. word32 stack_used(void);
  39. void clearDPMIstate(void);
  40.  
  41. int page_in(void);
  42. unsigned page_out(int);
  43. int page_is_valid(word32 vaddr);
  44. void page_in_everything(void);
  45. void page_out_everything(void);
  46.  
  47. int emu_install(char *filename); /* returns 1 if installed, 0 if not */
  48. word32 emu_start_ip(void);
  49.  
  50. typedef struct AREAS {
  51.   word32 first_addr;    /* in linear space, not program space */
  52.   word32 last_addr;    /* in linear space, not program space */
  53.   word32 foffset;    /* corresponding to first_addr; -1 = zero fill only */
  54.   word16 fileno;    /* which file to get pages from */
  55.   word16 filler;
  56.   } AREAS;
  57.  
  58. typedef enum {
  59.   A_text,
  60.   A_data,
  61.   A_bss,
  62.   A_arena,
  63.   A_stack,
  64.   A_vga,
  65.   A_syms,
  66.   A_syms2,
  67.   A_emu,
  68.   A_max
  69. } AREA_TYPES;
  70. #define MAX_AREA        9
  71. extern AREAS areas[MAX_AREA];
  72.  
  73. void loadAout(const AREAS* areas);
  74.  
  75. #endif
  76.